1. Field of the Invention
The present invention relates to a technique for optimizing performance of a software program in accordance with computer resources and, more particularly, to a method and system for dynamically optimizing execution of a portable software program on different computers.
2. Description of the Related Art
Hardware resources vary from computer to computer. As a consequence, software must be compiled for each different computer if it is to run at optimal speed on that computer.
Presently, software is generated so as to be portable between several different computers. The problem is that the software will not run at optimal speed on each of the different computers. In particular, software (even though portable) is typically compiled to run on a specific computer in accordance with the known hardware attributes of the specific computer. Alternatively, when compiling the software, a compiler may assume a general set of hardware characteristics of the class of computers for which the software is likely to be used. In the former case, the software will run at optimal speed only in the specific computer. In the latter case, the software never runs at optimal speed in any of the computers.
The problem also extends to the distribution of software. Namely, software vendors do not want to create specific versions of a software program for optimal performance on each of the many known computers likely to use the software. On the contrary, software vendors and users of programs want as few versions of a program as possible. Vendors prefer this because it reduces their inventory and support requirements. Although users appreciate the ability to port the software to different computers which they may presently or in the future own, users find the resulting inferior performance unsatisfactory.
The present invention provides a solution to this problem so that a single version of a software program can run at optimal speed in a number of different computers.